package com.leet.code.lcof;

public class Code67 {

    public static void main(String[] args) {
//
//        char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-'};
//
//        for (char c : chars) {
//            int i = c;
//            System.out.print(i + ",");
//        }
//        System.out.println();
//        println(Integer.toBinaryString(0x80000000));
//        println(Integer.toBinaryString(0x40000000));

//        for (int i = 0; i < 256; i++) {
//            char c = (char) i;
//            System.out.print(c + " ");
//        }


        System.out.println(new Code67().strToInt("2333333234242423424231"));

    }

    public static void println(String i) {
        System.out.println(String.format("%1$32s", i));

    }

    public int strToInt(String str) {
        if (str == null || str.length() == 0) {
            return 0;
        }

        int result = 0;
        int i = 0;
        while (i < str.length() && str.charAt(i) == ' ') {
            if (++i == str.length()) {
                return 0;
            }
        }

        int b;
        if (str.charAt(i) == '-') {
            b = -1;
            i++;
        } else {
            b = 1;
            if (str.charAt(i) == '+') {
                i++;
            }
        }


        int c;

        int m = Integer.MAX_VALUE / 10;
        for (; i < str.length(); i++) {
            c = str.charAt(i);
            if (c < '0' || c > '9') {
                break;
            }
            if (result > m || (result == m && c > '7')) {
                return b == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            result = result * 10 + (c - '0');

        }

        return b * result;

    }


    public int add(int a, int b) {
        while (b != 0) {
            int c = (a & b) << 1;//进位和
            a = a ^ b;//非进位和
            b = c;
        }
        return a;
    }

}
